package com.sure.minion.services.base.utils;


/**
 * @Description 字符串工具类
 * @author sure
 * @date 2015年8月28日  下午1:37:08
 */
public class StringUtil {
	
	/**
	 * @Description 去除空格
	 * @param str
	 * @return
	 * @author sure
	 */
	public static String trim(String str)
    {
        return str != null ? str.trim() : null;
    }
    
	/**
	 * @Description 将字符串中{0}{1}等替换成参数中的值
	 * @param str 含有{0}{1}等的字符串
	 * @param args 需要替换的参数列表
	 * @return
	 * @author sure
	 */
	public static String format(String str, String... args) {

		// 这里用于验证数据有效性
		if (str == null || "".equals(str))
			return "";
		if (args == null || args.length == 0) {
			return str;
		}

		String result = str;

		// 这里的作用是只匹配{}里面是数字的子字符串
		java.util.regex.Pattern p = java.util.regex.Pattern
				.compile("\\{(\\d+)\\}");
		java.util.regex.Matcher m = p.matcher(str);

		while (m.find()) {
			// 获取{}里面的数字作为匹配组的下标取值
			int index = Integer.parseInt(m.group(1));

			// 数组越界问题
			if (index < args.length) {

				// 替换，以{}数字为下标，在参数数组中取值
				if(args[index]!=null){
					result = result.replace(m.group(), args[index]);
				}else{
					result = result.replace(m.group(), "");
				}
			}
		}
		return result;
	}
}
